package 算法.排序算法;

public class 冒泡排序 {
    public static void main(String[] args) {
         /*
            冒泡排序：
            核心思想：
            1，相邻的元素两两比较，大的放右边，小的放左边。
            2，第一轮比较完毕之后，最大值就已经确定，第二轮可以少循环一次，后面以此类推。
            3，如果数组中有n个数据，总共我们只要执行n-1轮的代码就可以。
        */
        //1.定义一个数组
        int[] arr={2,4,5,3,1};

        //利用冒泡排序把数据变成1 2 3 4 5
        for (int h=0;h<arr.length-1; h++) {
            //因为每次冒泡之后最大值都是在最后,所以为了提高效率,每一轮之后,下次循环判断都不在判断上一次
            //已经冒泡过,排序好的,就不在进行循环判断.
            for (int i = 1; i < arr.length-h; i++) {
                //定义一个临时变量记录开始值
                int tem=arr[i];
                //比较
                if (arr[i-1]>arr[i]){
                    arr[i]=arr[i-1];
                    arr[i-1]=tem;
                }
            }
            //打印一轮之后的数组排序
            for (int j : arr) {
                System.out.print(j + " ");
            }
            //使每次打印后换行
            System.out.println();
        }

    }
}
